package com.ds.bintree.LeetCode;

/**
 * @author Dianzhi Han
 * @version 1.0
 * @description: TODO
 * @date 2022/9/14 18:12
 */
public class Num606_Tree2str {

    public String tree2str(TreeNode root) {
        if(root == null){
            return "";
        }
        return transform(root);
    }

    private String transform(TreeNode root) {
        StringBuilder str = new StringBuilder(); //注意这个stringbuilder要创建在递归里面，每次返回的都是一个字符串对象，然后拼接
        if (root == null){
            return "";
        }
        if (root.left == null && root.right == null){
            return str.append(root.val).toString();
        }

        if (root.left!= null && root.right == null){
            return str.append(root.val).append("(").append(transform(root.left)).append(")").toString();
        }
        if (root.left==null){
            return str.append(root.val).append("()").append("(").append(transform(root.right)).append(")").toString();
        }
        return str.append(root.val).append("(").append(transform(root.left)).append(")").append("(").append(transform(root.right)).append(")").toString();
    }
}
